#ifndef H_SCREEN
#define H_SCREEN

#define GET_MACRO( type, var ) type get_##var () { return var; }

#include "drawable.h"

class Screen {
   private:
      int width; //The size in game's units
      int height;
      Drawable* background;

   protected:
      int sysWidth;
      int sysHeight;

   public:
   
      static DrawableList* drawableList;

      Screen (int _w, int _h);
      virtual int init ();
      virtual void done ();
      virtual void draw(int, int, char); //Draws a chat at position x y
      virtual int flush ();
      virtual int blitSurface ( Drawable* );
      virtual int update ();
      GET_MACRO( int, width )
      GET_MACRO( int, height )
      GET_MACRO( int, sysWidth )
      GET_MACRO( int, sysHeight )

      void setBackground ( Drawable* );
      void render ();

};


#undef GET_MACRO

#endif
